「紅隊」這個詞這幾年常被拿來當形容詞用,連科技公司評估新產品風險都會說「找紅隊來測試一下」,意思大概就是「找人來找麻煩」。這個用法沒有錯,但把它放回資安的原始語境裡,紅隊與藍隊其實是一套分工明確的組織設計,理解這套分工,對後面理解攻防兩端的思維方式會很有幫助。
藍隊:守住系統的那一方
藍隊(Blue Team)是負責防禦的一方,日常工作包括監控系統異常行為、設定與維護防火牆和入侵偵測系統、修補已知弱點、處理資安事件、寫事件應變流程。如果把一間公司的資安部門想成醫院,藍隊做的事情比較接近急診室加上公共衛生部門的混合體——一邊要處理眼前正在發生的攻擊,一邊要建立長期的防護機制,降低下一次出事的機率。
藍隊的日常有個特殊的難處:防守方永遠不知道自己什麼時候算「贏」。系統一整年沒被攻破,可能是防禦真的做得好,也可能只是運氣好、沒被鎖定。這種難以量化成效的特性,是藍隊工作裡最容易被低估、也最容易讓人疲乏的部分。
紅隊:站在攻擊者的立場找破口
紅隊(Red Team)的工作是模擬真實攻擊者,主動嘗試打穿自己公司的系統,目的是在真正的威脅出手之前,先找出防守方沒發現的破口。紅隊的思維方式跟藍隊完全相反:藍隊想的是「怎麼把所有已知的洞都補起來」,紅隊想的是「假設我是壞人,我會從哪裡下手、用最少的動作拿到最大的權限」。
紅隊工作通常不是漫無目的地到處找漏洞,而是設定一個具體目標,例如「取得財務系統的存取權」或「從外部網路一路打進內網的網域控制器」,然後從偵查開始,一步步逼近這個目標。演練過程可能只用到一兩個真正的技術漏洞,其餘靠的是設定疏失、權限濫用、甚至社交工程串起來的攻擊路徑——單一環節可能都不嚴重,但串在一起就能一路打穿。紅隊演練通常也不會事先告知防守方具體的時間跟手法,這樣才能真實測出對方的偵測與應變能力,而不是測出「大家知道要被考試,所以特別警覺」的假象。
紅隊演練 vs. 滲透測試:範圍跟目標不一樣
這兩個詞常被當成同義詞,但實務上是兩種不同性質的工作。
滲透測試(Penetration Testing)通常有明確界定的範圍與時間框架,例如「測試這個 Web 應用程式和它的 API,兩週內完成,產出一份弱點清單跟修補建議」。目標是盡可能找出範圍內所有能找到的技術性弱點,講究的是廣度跟涵蓋率,結案時會拿到一份分級排序的弱點報告。
紅隊演練的目標不是「找出所有的洞」,而是回答一個更貼近現實的問題:如果真正的攻擊者鎖定我們,想拿到某個特定的東西,他們做不做得到?過程可能會用到技術漏洞,但也可能完全繞過技術層面,直接用電話冒充 IT 人員套出密碼,或是假裝成外送員混進辦公室插一個隨身碟。紅隊演練講究的是深度跟真實度,結案報告談的不只是弱點清單,還包括「防守方在哪個環節本來有機會發現我們,但沒有發現」。
範圍也不同。滲透測試範圍固定、參與人員通常知情(至少 IT 部門知道測試會發生),紅隊演練範圍可以橫跨技術、實體、人員多個面向,而且刻意讓大部分防守方人員不知情,才能真實測試出應變能力。
滲透測試實際上怎麼進行
滲透測試一般會照著一套方法論走,雖然不同框架用詞略有差異,大致上會經過幾個階段。
範圍界定是第一步,雙方先講清楚哪些系統可以測、哪些不能碰、用哪些手法(例如是否允許 DDoS 這種可能影響正式環境穩定度的測試)、什麼時間窗口進行,這份文件通常會正式簽署,因為接下來的動作如果沒有授權,在法律上就是不折不扣的入侵。
偵查階段是蒐集目標的公開資訊——網域註冊資料、員工在社群媒體上留下的線索、系統用了哪些技術框架、有沒有洩漏在外的原始碼或設定檔。這個階段完全不碰目標系統,單純靠公開資訊拼湊輪廓。
掃描與列舉開始跟目標系統互動,找出開放的服務、版本資訊、可能的入口點,常見工具包括連接埠掃描器跟弱點掃描器,這個階段產出的是「這個系統長什麼樣子」的技術地圖。
取得存取權是實際嘗試利用找到的弱點,拿到系統的某種程度的控制權,可能是一個低權限的使用者帳號,也可能是伺服器的執行權限。
提升權限與橫向移動,拿到一個入口之後,往往還不是目標,測試者會嘗試從低權限提升到管理員權限,或是從一台機器跳到內網的其他機器,模擬攻擊者「得寸進尺」的過程。
報告是滲透測試最終真正交付的東西——找到的每個弱點、利用的方式、對應的風險評級、修補建議,一份寫得好的報告要讓非技術背景的主管看得懂影響有多大,也要讓工程師看得懂怎麼修。很多人以為滲透測試的價值在「打得進去」,但對客戶來說,報告的品質往往比攻進去的過程本身更重要,因為那才是能拿去實際改善系統的東西。
這套分工跟你有什麼關係
如果你不是在企業資安部門工作,可能會覺得這套分工離自己很遠。但這個框架其實提供了一個很實用的思考習慣:遇到任何系統設計,都可以同時戴上紅隊和藍隊的帽子問自己兩個問題——「如果我是攻擊者,我會怎麼打這個系統」跟「如果真的被打了,我怎麼發現、怎麼補救」。
這兩個問題看起來簡單,但養成隨手問自己這兩句的習慣,會讓你在寫程式、設計系統架構、甚至只是設定自己電腦的權限時,自然而然地把資安考量放進決策裡,而不是等到出事之後才想起來。